/**
 * javascript AMD --
 * @description 主要管理模块
 * 		-------------用户管理
 * @author cnbi<zhh>
 * @time 2014/4/24
 * @version 1.0
 */
 /**Jquery 扩展 表单序列化表单转为json 对象**/
 define(['apps/utils/tools','apps/manage'],function(tools,manage){
	  function init (param) {
		  var options = param.options;
		  options.onPageClicked = function(e,originalEvent,type,page){
			  var bean = param.obj;
			  bean.currentPage = page;
			  var url = tools.getBasePathUrl() + bean.scode+"/index.cnbi";
			  var searText = $('#searchUser').parent().prev()[0].value;
	  		  searText = searText.replace(/\s+/g,'');
	  		  if(searText.length != 0)
	  		  	 bean.username = searText;
			  tools.ajax({url : url,dataType : 'html',data :bean,success :success});
		  };
		  $('#paginator').bootstrapPaginator(options);
		  //$('#paginator ul').addClass('pagination');
		 // $('#paginator').bootstrapPaginator('setOptions',options);
		  $('.pointer-cursor').css({'cursor':'pointer'});
		  /** 按钮绑定事件 */
		  btnBind(param["obj"]);
		  //tools.bindPanelHeaderDbClick();
	  };
	  function success(msg){
		  $("#content").empty().append(msg);
			/* options 分页 对象参数 */
		  init(Utils.paramObj);
		  
	  };
	  
	  function btnBind(bean){
	  	 /**
	  	  * 单击表格 一行数据
	  	  * **/
	  	 tableSingleClick();
	  		
	  	  /** 全选与反选 **/
	  	  choiceIsAll();
		  
	  	  
	  	  /** 为每个 checkbox 添加 点击事件*/
	  	  $('input[type=checkbox]').bind('click',function(){
	  	  	checkboxChecked($(this));
	  	  });
	  	  
		  /** input 值 change 事件
		   * 注意: -- 直接用 $('#username').change(fun)  error
		   * **/
	  	  inputUsChange(bean);
		 
		  /**
		   * 保存用户信息
		   * **/
	  	  saveUser(bean);
	  	  
	  	  /**
		   * 修改用户信息
		   * **/
	  	  updateUser(bean);
	  	  
	  	  /**
	  	   * 查询条件
	  	   * **/
	  	  searchUser(bean);
	  	  
	  	   /**
	  	   * 清空条件
	  	   * **/
	  	  clearUser(bean);
	  	  
	  	  /**
	  	   * 删除用户
	  	   * */
	  	  deleteUser(bean);
	  };
	  
	  return {
	    init: init
	  };
	  
	  //checkbox 选中
	  //$check jquery 对象
	  function checkboxChecked($check){
	  	if($check[0].checked){
  		 	 $check.attr('checked','checked');
		  }else{ 
		  	$check.removeAttr('checked');
		 }
	  };
	  //单击表格一行
	  function tableSingleClick(){
	  		 //表格 
		  $('tbody >tr').bind('click',function(){
		  	 tools.applyTableSingleSelectClickStyle(this);
		  });
	  };
	  
	  /**保存用户*/
	  function saveUser(bean){
	  	  $('#saveUser').click(function(){
		  var url  = tools.getBasePathUrl() + bean.scode+"/addUser.cnbi";
		  	 operatorUser('#userForm',url,bean,'#comTree','#roleTree','#saveUser');
	  	 });
	  };
	  
	  //修改用户信息 data-toggle="modal" data-target="#userUpModal"
	  function updateUser(bean){
	  	var $upUser = $('#upUser');
		$upUser.click(function(){
			var userArr = getCheckBox();
			if(userArr.length == 0){
	  			attrMove($upUser);
	  	  	 	$('#contentRole').html('<code>请选择要修改的用户</code>');
	  			//moveEditAttr('#upUser');
	  		}else if(userArr.length > 1){
	  			attrMove($upUser);
	  	  	 	$('#contentRole').html('<code>不支持多用户修改</code>');
	  			//moveEditAttr('#upUser');
	  		}else{
	  			madeForm(userArr);
	  			$('#updateUser').click(function(){
	  				var url = tools.getBasePathUrl() + bean.scode+"/updateUser.cnbi";
	  				bean.username = userArr[0];
		  			operatorUser('#userUpForm',url,bean,'#comUpTree','#roleUpTree','#updateUser');
	  			});
	  		}
		});
	  };
	  
	  //用户操作 添加和修改调用的同一方法
	  /**
	   * @param formId  form表单 dom元素
	   * @param url 请求地址
	   * @param bean 当前页面对象
	   * @param comId 公司 select option 元素id
	   * @param roleId 角色 select option 元素 id
	   * @param buttonId 操作按钮 dom 元素id
	   * **/
	  function operatorUser(formId,url,bean,comId,roleId,buttonId){
	  	//表单验证
			  $(formId).validation();
			    // 2.最后要调用 valid()方法
			  if ($(formId).valid()==false){
			    //$("#error-text").text("用户信息填写有误!");
			  	  $(buttonId).removeAttr('data-dismiss');
			      return false;
			  }else{
				  //$('#userForm').submit();
			  	/**Jquery 扩展 表单序列化表单转为json 对象 serialize**/
				 var obj = $(formId).serializeJson();
			  	  //var obj = $(formId).serialize();
				  //给用户 分配 所属公司 角色
				  bean.company = getValue(comId);
				  bean.role = getValue(roleId);
				  //获取当前页
				  var current  = $('#paginator').bootstrapPaginator("getPages").current;
				  bean.currentPage = current;
				  //拷贝属性
				  tools.applyIf(obj,bean);
				  tools.ajax({url : url,dataType : 'html',data : obj,
				  		success :success});
				  $(buttonId).attr({'data-dismiss':'modal'});
				 // attrMove($(buttonId));
				  var text = '';
		 	  	  if(buttonId === '#saveUser'){
		 	  	 		text = '添加';
		 	  		}else text = '修改';
		 	  		//$('#contentRole').html('<span style="color:green">'+text+'用户<code>'+obj.username+'</code>操作完成</span>');
				  	$.Zebra_Dialog(text+'用户<code>'+obj.username+'</code>操作完成',
				  		{'auto_close':2000,'type':false,'buttons':false});
				  }
	  };
	  
	  //修改用户 form 显示要修改用户的信息
	  function madeForm(userArr){
  		$('#upUser').attr({'data-toggle':'modal'});
  			$('#upUser').attr({'data-target':'#userUpModal'});
  			$('#userUpModal h4').children().next().text('修改'+userArr+'信息');
  			var bean = $('table input[type=checkbox][checked]')[0]["attributes"];
  			$('#userUpForm input[name=username]')[0].value = bean.value.value;
  			$('#userUpForm input[name=trueName]')[0].value = bean.truename.value;
  			$('#userUpForm input[name=phone]')[0].value = bean.phone.value;
  			$('#userUpForm input[name=email]')[0].value = bean.email.value;
  			var company = bean.company.value,role = bean.role.value;
  			getSelected('#comUpTree',company);
	  		getSelected('#roleUpTree',role);
	  };
	  
	  //特定的 select option 选中
	  function getSelected(domid,value){
	  	  var objs = $(domid)[0]["options"];
	  		for (var i = 0; i < objs.length; i++) {
				if(objs[i].value == value){
					objs[i].selected = 'selected';
				}
			}
	  };
	  
	  //条件不满足 时 修改窗口 不显示
	  function moveEditAttr(id){
	  	$(id).removeAttr('data-toggle');
	  	$(id).removeAttr('data-target');
	  }
	  
	  //删除用户
	  function deleteUser(bean){
	  	var $delUser = $('#delUser');
	  	$delUser.click(function(){
	  		 // checkbox 选中情况
	  		var userArr = getCheckBox();
	  		//未选中 删除的用户
	  		if(userArr.length == 0){
	  			//tools.alertMsg('请选择 需要删除的用户...');
	  			attrMove($delUser);
			  	$('#contentRole').html('<code>请选择要删除的用户</code>');
	  		}else{
	  			var userStr = '';
	  			for (var i = 0,len = userArr.length; i < len; i++) {
	  				userStr = userStr + "'" +userArr[i] + "'";
	  				if(i != len - 1){
	  					userStr = userStr + ",";
	  				}
	  			}
	  			 attrMove($delUser);
			  	 $('#contentRole').html('<code>确认要删除这些用户 ['+userStr+']吗?</code>');
			  	 $('#myModal .modal-footer').show();
			  	 $('#okbtn').click(function(){
			     	var url  = tools.getBasePathUrl() + bean.scode+"/deleteUser.cnbi";
	  				bean.username = userStr;
	  			    tools.ajax({url : url,dataType : 'html',data :bean,
				  		success :success});
			  	 });
	  		}
	  	});
	  };
	  
	  //显示  模态框
	  function attrMove($grand){
	  	//data-toggle="modal" data-target="#myModal"
	  	 //$grand.attr({'data-toggle':'modal'});
	  	 $grand.attr({'data-target':'#myModal'});
	  };
	  //隐藏 模态框
	  function removeAttr($grand){
	  	$grand.removeAttr('data-toggle');
	  	$grand.removeAttr('data-target');
	  };
	  //更换 模态框
	  function editAttr($grand){
	  	// $grand.attr({'data-toggle':'modal'});
	  	 $grand.attr({'data-target':'#upModal'});
	  };
	  
	   /** checkbox 选中情况**/
	  function getCheckBox(){
	  	  var userArr = [];
	  		//所有选中 checkbox
	  		$('table input[type=checkbox][checked]').each(function(){
	  			 userArr.push($(this)[0].value);
	  		});
	  		return userArr;
	  };
	  
	  /**添加用户 时获取公司|角色**/
	  function getValue(domId){
	  	  var obj = $(domId)[0];
		  var index = obj.selectedIndex;
		  return obj.options[index].value;
	  }
	  
	  /** 查询用户 */
	  function searchUser(bean){
	  	$('#searchUser').click(function(){
	  		//tools.alertMsg('查询');
	  		var searText = $('#selinput')[0].value;
	  		searText = searText.replace(/\s+/g,'');
	  		bean.username = searText;
	  		//bean.username = searText;
	  		queryCommon(bean);
	  	});
	  };
	  
	  /** 清空条件查询*/
	  function clearUser(bean){
	  	 $('#clearUser').click(function(){
	  	 	//tools.alertMsg('清空');
	  	 	$('#selinput')[0].value = '';
	  	 	bean.username = null;
	  	 	queryCommon(bean);
	  	 });
	  };
	  
	  /** 查询 公共方法 **/
	  function queryCommon(bean){
	  	var url  = tools.getBasePathUrl() + bean.scode+"/index.cnbi";
	  	tools.ajax({url : url,dataType : 'html',data :bean,
				  		success :success});
	  };
	  	/** 全选按钮 & 反选按钮 */
	  function choiceIsAll(){
	  	 $('i[selBtn=sel]').bind('click',function(){
			 $('input[type=checkbox]').each(function(){
				  if(this.checked){
				  	this.checked = false;
				  	$(this).removeAttr('checked');
				  }else{ 
				  	this.checked = true;
				  	$(this).attr('checked','checked');
				  }
			 });
		  });
	  };
	  
	  /** 输入用户名 判断**/
	  function inputUsChange(bean){
	  		$('input[name=username]').change(function(){
			  	var username = $('#username')[0].value.replace(/\s+/g,'');
			  	//验证用户名是否存在
			    if(username.length > 0){
			  	var url = tools.getBasePathUrl() + bean.scode+"/queryUser.cnbi";
			  		tools.ajax({url : url,dataType : 'json',data :{username:username},
				  	success :function(msg){
				  		if(!msg.flag){
							 $("#username")[0].value = '';
							 if(!$("#valierr")[0])
							 	$("#username").parent().after('<span class="help-block" id="valierr" style="color: #a94442">' + msg.text +'</span>');
							 else{
							 	$("#username").parent().next().remove();
							 	$("#username").parent().after('<span class="help-block" id="valierr" style="color: #a94442">' + msg.text +'</span>');
							 }
				  		}else{
				  			$("#username").parent().next().remove();
				  		}
			  		}});
			   }
		  });
	  };
	  
	  /** 输入列表 input  去  空格***/
		function trimSpace(){
			var text = $('input[type="text"],input[type="password"]');
			//input 去空格
			$.each(text,function(i,val){
				var id = '#'+text[i].id;
				var o = $(id)[0];
				if(o != undefined){
					o.value = o.value.trim();
				}
			});
		} ;
});

